// 请求拦截器
const requestInterceptor = (config) => {
    // 在发送请求之前做些什么，例如添加请求头
    const token = uni.getStorageSync('token');
    if (token) {
        config.header = {
            ...config.header,
            'Authorization': `Bearer ${token}`
        };
    }
    return config;
};

// 响应拦截器
const responseInterceptor = (response) => {
    // 对响应数据做点什么，例如处理错误状态码
    const { statusCode, data } = response;
	console.log("statusCode");
	console.log(statusCode);
	
    if (statusCode === 200) {
        return data;
    } else {
        // 处理错误情况
        uni.showToast({
            title: `请求失败，状态码：${statusCode}`,
            icon: 'none'
        });
        return Promise.reject(new Error(`请求失败，状态码：${statusCode}`));
    }
};

// 封装 uni.request
const request = (options) => {
    // 执行请求拦截器
    const newOptions = requestInterceptor(options);

    return new Promise((resolve, reject) => {
        uni.request({
            ...newOptions,
            success: (res) => {
                try {
                    // 执行响应拦截器
                    const result = responseInterceptor(res);
                    resolve(result);
                } catch (error) {
                    reject(error);
                }
            },
            fail: (err) => {
                uni.showToast({
                    title: `网络请求失败：${err.errMsg}`,
                    icon: 'none'
                });
                reject(err);
            }
        });
    });
};

export default request;